分享人:甘乐
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
常用的字符型数据
char(n) /*fixed-length*/
varchar(n) /*variable-length*/
char列可以设置的最大长度为255个字节,而varchar列最大可以存储65535个字节(MySQL5.0及以上版本)。 基本拉丁字母、数字和标点符号使用一个字节,其他语言如汉语、日语、扩展的拉丁字母和希腊语等每个字符的存储需要多少字节由字符集确定。
文本型数据
如果需要存储的数据超过64KB(65535字节),需要使用文本类型。
tinytext(255)、text(65535)、mediumtext(16777215)、longtext(4294967295)
1.varchar(n)的含义
MySQL4.0版本以下,指的是n字节;5.0版本及以上,指的是n个字符,无论存放的是数字、字母还是汉字都可以存储20个,把n视为存储空间最大值并且只使用存储字符串实际需要的长度。
2.最大存储空间
在 MySQL5.0及以上的版本中,varchar数据类型支持的最大长度是65535字节。但是由于起始位和结束位占去了3个字节,即可用的最大存储空间是65532个字节(UTF8字符集下支持21843个汉字)。VARCHAR保存形式为前缀+数据,前缀用1到2个字节表示实际长度,超过255时需要2个字节。
3.varchar类型数据的长度
varchar类型数据长度n由存储到列上值的最大长度确定;如name字段,varchar(5) name 考虑少数民族情况,会导致部分超过5个汉字的人名无法插入;在这里,设定n=30显然更加合理。
一个varchar类型数据的字节数
=前缀位数+∑(字符数*相应字符所需的存储空间)
varchar类型和text与longtext类型的区别
1.最大存储空间不同:varchar和text是65535字节,即64KB;longtext是4294967295字节,即4GB
2.varchar类型会使用1-2个字节的前缀来存储长度,而text和longtext不会。
3.text和longtext不需要指定存储位数,而varchar需要指定n的大小。如:"varchar(500) curriculum vitae" "text curriculum vitae "
如果装到text或longtext列的数据超过了该类型的最大长度,超出部分的数据将被截断。如今MySQL允许varchar最大存储空间与text相同,所以一般较少使用text或tinytext类型了。
使用命令行工具演示!
在一个表里,将某列的数据类型分别设置为varchar和text,索引的效率是否受到影响?为什么
无。
今天的分享就到这里啦,欢迎大家拍砖和吐槽!